Working with Arithmetic Operators in Python
Course: Python Training Course
Topic: Working with Arithmetic Operators
Course Link: Python Training Course – JustAcademy
Demo Registration: Register for a Free Course Demo
Website: Visit JustAcademy
1. Introduction to Arithmetic Operators in Python
Arithmetic operators are fundamental operators in Python used to perform mathematical calculations on numeric values and variables. They allow programmers to add numbers, subtract values, multiply quantities, divide numbers, calculate remainders, perform floor division, and raise values to powers.
Arithmetic operations are used in many programming applications, including billing systems, shopping carts, banking software, student grade calculations, scientific applications, data analysis, financial reports, and automation scripts.
Python supports several arithmetic operators that work with numeric data types such as int, float, and complex. The result depends on the operands, the operator used, and Python's numeric rules.
Example
a = 20
b = 6
print(a + b)
print(a - b)
print(a * b)
print(a / b)
Output:
26
14
120
3.3333333333333335
In this example, Python performs addition, subtraction, multiplication, and division using the values stored in a and b.
2. Learning Objectives
After completing this topic, learners should be able to:
- Understand the purpose of arithmetic operators in Python.
- Identify the main arithmetic operators and their symbols.
- Perform addition, subtraction, multiplication, and division.
- Understand floor division and the modulus operator.
- Calculate powers using the exponentiation operator.
- Use arithmetic operators with variables and user input.
- Understand operator precedence and parentheses.
- Recognize common errors such as division by zero.
- Apply arithmetic operations in practical Python programs.
3. What Is an Arithmetic Operator?
An arithmetic operator is a symbol that tells Python to perform a mathematical operation on one or more operands. An operand is a value or variable on which an operation is performed.
For example, in 12 + 8, the plus symbol (+) is the operator, while 12 and 8 are the operands.
| Component |
Meaning |
Example |
| Operator |
Symbol that performs an operation |
+ |
| Operand |
Value used in an operation |
12 and 8 |
| Expression |
Combination of values and operators |
12 + 8 |
| Result |
Value produced by evaluating the expression |
20 |
4. Types of Arithmetic Operators in Python
Python provides the following commonly used arithmetic operators.
| Operator |
Name |
Example |
Result |
Purpose |
+ |
Addition |
10 + 4 |
14 |
Adds two values. |
- |
Subtraction |
10 - 4 |
6 |
Subtracts the second value from the first. |
* |
Multiplication |
10 * 4 |
40 |
Multiplies two values. |
/ |
Division |
10 / 4 |
2.5 |
Performs true division. |
// |
Floor division |
10 // 4 |
2 |
Returns the quotient rounded down toward negative infinity. |
% |
Modulus |
10 % 4 |
2 |
Returns the remainder. |
** |
Exponentiation |
2 ** 4 |
16 |
Raises a value to a power. |
+x |
Unary plus |
+5 |
5 |
Indicates a positive value. |
-x |
Unary minus |
-5 |
-5 |
Produces the negated value. |
5. Addition Operator (+)
The addition operator (+) adds two numeric values and returns their sum. It is frequently used for totals, scores, quantities, balances, and financial calculations.
Example 1: Adding Two Numbers
num1 = 15
num2 = 25
total = num1 + num2
print("Total:", total)
Output:
Total: 40
Example 2: Adding Decimal Numbers
price1 = 49.50
price2 = 30.25
total_price = price1 + price2
print("Total price:", total_price)
Output:
Total price: 79.75
Important Note
The + operator can also concatenate strings and combine compatible sequences. However, adding a string and a number directly normally raises a TypeError.
print("Python " + "Programming")
# Output: Python Programming
# This raises TypeError:
# print("Age: " + 25)
# Convert the number to a string:
print("Age: " + str(25))
6. Subtraction Operator (-)
The subtraction operator (-) subtracts the second operand from the first. It can calculate differences, discounts, remaining balances, changes in temperature, and the amount of stock left after a sale.
Example 1: Subtracting Two Integers
a = 100
b = 35
difference = a - b
print("Difference:", difference)
Output:
Difference: 65
Example 2: Calculating a Discounted Price
original_price = 1500
discount = 250
final_price = original_price - discount
print("Final price:", final_price)
Output:
Final price: 1250
Example 3: Negative Results
result = 10 - 25
print(result)
Output:
-15
Python allows negative results when the second operand is greater than the first.
7. Multiplication Operator (*)
The multiplication operator (*) multiplies two numeric values. It is used to calculate totals for repeated quantities, areas, salaries, expenses, and other numerical measurements.
Example 1: Multiplying Two Numbers
a = 12
b = 8
product = a * b
print("Product:", product)
Output:
Product: 96
Example 2: Calculating the Total Cost
item_price = 250
quantity = 4
total_cost = item_price * quantity
print("Total cost:", total_cost)
Output:
Total cost: 1000
Example 3: Multiplying by a Decimal
hours = 7.5
hourly_rate = 200
salary = hours * hourly_rate
print("Calculated payment:", salary)
Output:
Calculated payment: 1500.0
Multiplication with Sequences
Python also allows multiplication of a sequence by an integer to repeat it.
print("Hi! " * 3)
print([1, 2] * 2)
Output:
Hi! Hi! Hi!
[1, 2, 1, 2]
Sequence repetition is different from numeric multiplication. For example, multiplying a list by a number repeats its elements rather than multiplying each element individually.
8. Division Operator (/)
The division operator (/) performs true division and returns a floating-point result for ordinary numeric operands, even when the division produces a whole-number value.
Example 1: Basic Division
a = 20
b = 4
result = a / b
print(result)
print(type(result))
Output:
5.0
<class 'float'>
Example 2: Division with a Remainder
result = 17 / 5
print(result)
Output:
3.4
Example 3: Dividing a Bill
total_bill = 1250
people = 5
amount_per_person = total_bill / people
print("Each person pays:", amount_per_person)
Output:
Each person pays: 250.0
Division by Zero
Division by zero is not permitted for ordinary Python numeric division. It raises a ZeroDivisionError. When the divisor comes from user input or a calculation, validate it before performing division.
numerator = 100
denominator = 0
if denominator != 0:
print(numerator / denominator)
else:
print("Error: denominator cannot be zero")
Output:
Error: denominator cannot be zero
9. Floor Division Operator (//)
The floor division operator (//) divides two values and rounds the mathematical quotient down to the nearest integer value. With integer operands, the result is usually an integer; if a floating-point operand is involved, the result is generally a float.
Example 1: Positive Values
a = 17
b = 5
print(a // b)
Output:
3
The mathematical quotient is 3.4. Floor division returns 3 because it rounds down to the nearest integer value.
Example 2: Floor Division with Negative Numbers
print(-17 // 5)
print(17 // -5)
print(-17 // -5)
Output:
-4
-4
3
Floor division rounds toward negative infinity, not toward zero. This distinction is especially important when negative numbers are involved.
Example 3: Converting Minutes into Whole Hours
total_minutes = 185
hours = total_minutes // 60
remaining_minutes = total_minutes % 60
print("Hours:", hours)
print("Remaining minutes:", remaining_minutes)
Output:
Hours: 3
Remaining minutes: 5
10. Modulus Operator (%)
The modulus operator (%) returns the remainder from division. It is useful for checking whether a number is even or odd, splitting quantities into groups, calculating remaining time, and cycling through repeating positions.
Example 1: Finding the Remainder
a = 17
b = 5
remainder = a % b
print("Remainder:", remainder)
Output:
Remainder: 2
Example 2: Checking Whether a Number Is Even or Odd
number = 24
if number % 2 == 0:
print("Even number")
else:
print("Odd number")
Output:
Even number
An even integer has a remainder of zero when divided by 2. An odd integer has a remainder of one when using a positive integer divisor of 2.
Example 3: Distributing Items into Groups
items = 23
items_per_box = 5
full_boxes = items // items_per_box
leftover_items = items % items_per_box
print("Full boxes:", full_boxes)
print("Leftover items:", leftover_items)
Output:
Full boxes: 4
Leftover items: 3
Modulus with Negative Values
In Python, the remainder follows the sign of the divisor. For example:
print(-17 % 5)
print(17 % -5)
Output:
3
-3
For ordinary integer operands and a nonzero divisor, floor division and modulus are related by the identity a == (a // b) * b + (a % b).
11. Exponentiation Operator (**)
The exponentiation operator (**) raises a base value to a specified power. It is used for squares, cubes, compound mathematical calculations, scientific formulas, and geometric computations.
Example 1: Squaring a Number
number = 6
square = number ** 2
print("Square:", square)
Output:
Square: 36
Example 2: Calculating a Cube
number = 4
cube = number ** 3
print("Cube:", cube)
Output:
Cube: 64
Example 3: Fractional Exponents
print(25 ** 0.5)
print(27 ** (1 / 3))
Output:
5.0
3.0
Fractional exponents can represent roots. Floating-point precision may cause results to differ slightly from exact mathematical values.
Example 4: Exponentiation and Negative Numbers
print((-3) ** 2)
print(-3 ** 2)
Output:
9
-9
Exponentiation has higher precedence than unary minus. Therefore, -3 ** 2 is interpreted as -(3 ** 2). Use parentheses when you intend to square a negative number.
12. Unary Plus and Unary Minus
Unary operators operate on a single operand. Unary plus (+) indicates a positive value and usually leaves the numeric value unchanged. Unary minus (-) negates a numeric value.
number = 10
print(+number)
print(-number)
print(-(-number))
Output:
10
-10
10
Unary minus is useful for changing the sign of a value, representing losses, calculating negative differences, and reversing a direction represented numerically.
13. Arithmetic Operators with Variables
Variables store values that can be used in arithmetic expressions. When a variable is reassigned, subsequent calculations use its current value.
length = 12
width = 5
area = length * width
perimeter = 2 * (length + width)
print("Area:", area)
print("Perimeter:", perimeter)
Output:
Area: 60
Perimeter: 34
Using variables makes programs easier to maintain because values can be updated without rewriting every expression.
14. Taking User Input for Arithmetic Calculations
The input() function reads user input as a string. To perform numeric calculations, convert the input using functions such as int() or float().
Example: Adding Two Numbers Entered by a User
num1 = float(input("Enter the first number: "))
num2 = float(input("Enter the second number: "))
total = num1 + num2
print("Sum:", total)
Sample Input:
Enter the first number: 12.5
Enter the second number: 7.5
Output:
Sum: 20.0
Example: A Simple Arithmetic Calculator
num1 = float(input("Enter first number: "))
operator = input("Enter operator (+, -, *, /, //, %, **): ")
num2 = float(input("Enter second number: "))
if operator == "+":
result = num1 + num2
elif operator == "-":
result = num1 - num2
elif operator == "*":
result = num1 * num2
elif operator == "/":
if num2 != 0:
result = num1 / num2
else:
result = "Error: division by zero"
elif operator == "//":
if num2 != 0:
result = num1 // num2
else:
result = "Error: division by zero"
elif operator == "%":
if num2 != 0:
result = num1 % num2
else:
result = "Error: division by zero"
elif operator == "**":
result = num1 ** num2
else:
result = "Invalid operator"
print("Result:", result)
This program demonstrates how arithmetic operators can be combined with input conversion, conditional statements, and error checks to create an interactive calculator. For a more robust application, handle invalid numeric input and very large exponentiation results as well.
15. Operator Precedence in Python
Operator precedence determines which operation Python evaluates first when an expression contains multiple operators. Understanding precedence helps prevent unexpected results.
| Priority |
Operator or category |
Example |
| Higher |
Parentheses |
(a + b) |
| |
Exponentiation |
a ** b |
| |
Unary plus and minus |
-a, +a |
| |
Multiplication, division, floor division, modulus |
*, /, //, % |
| Lower |
Addition and subtraction |
+, - |
Operators at the same precedence level generally evaluate from left to right, with exponentiation being right-associative. When in doubt, use parentheses to make the intended order explicit.
Example 1: Multiplication Before Addition
result = 10 + 5 * 2
print(result)
Output:
20
Python calculates 5 * 2 first and then adds 10.
Example 2: Using Parentheses
result = (10 + 5) * 2
print(result)
Output:
30
The parentheses instruct Python to calculate the addition before multiplication.
Example 3: Exponentiation Associativity
print(2 ** 3 ** 2)
print((2 ** 3) ** 2)
Output:
512
64
The first expression is evaluated as 2 ** (3 ** 2), producing 512. The second explicitly calculates 2 ** 3 first and then raises that result to the power of 2.
16. Arithmetic Operators with Different Numeric Types
Python supports arithmetic with integers, floating-point numbers, and complex numbers, subject to the rules of each type. Mixing integers and floats generally produces a float. Operations involving complex numbers can produce complex results, but ordering comparisons such as < and > are not defined for complex numbers.
integer_value = 10
float_value = 2.5
print(integer_value + float_value)
print(integer_value * float_value)
print(type(integer_value + float_value))
Output:
12.5
25.0
<class 'float'>
Working with Complex Numbers
a = 2 + 3j
b = 1 + 2j
print(a + b)
print(a * b)
Output:
(3+5j)
(-4+7j)
Complex numbers are useful in specialized areas such as engineering, signal processing, and scientific computing.
17. Floating-Point Precision
Python's float type uses binary floating-point representation. Many decimal fractions cannot be represented exactly in binary, so calculations can sometimes produce small precision differences.
result = 0.1 + 0.2
print(result)
Typical output:
0.30000000000000004
This is a normal consequence of floating-point representation, not necessarily a programming mistake. For approximate comparisons, use math.isclose(). For monetary calculations that require decimal arithmetic, consider the decimal.Decimal type and apply an appropriate rounding policy.
import math
print(math.isclose(0.1 + 0.2, 0.3))
Output:
True
Example: Using Decimal for Money
from decimal import Decimal
price = Decimal("19.99")
tax = Decimal("1.50")
total = price + tax
print(total)
Output:
21.49
When using Decimal, create values from strings when exact decimal input is important, rather than directly converting a binary float.
18. Arithmetic Assignment Operators
Python also provides augmented assignment operators. These combine an arithmetic operation with assignment, making some updates more concise.
| Operator |
Equivalent form |
Example |
Effect when x starts at 10 |
+= |
x = x + 3 |
x += 3 |
13 |
-= |
x = x - 3 |
x -= 3 |
7 |
*= |
x = x * 3 |
x *= 3 |
30 |
/= |
x = x / 3 |
x /= 3 |
3.333... |
//= |
x = x // 3 |
x //= 3 |
3 |
%= |
x = x % 3 |
x %= 3 |
1 |
**= |
x = x ** 3 |
x **= 3 |
1000 |
Example: Updating a Running Total
total = 100
total += 50
total -= 20
total *= 2
print(total)
Output:
260
Augmented assignment is common in loops, counters, accumulators, and calculations that update a value repeatedly.
19. Practical Example: Calculating a Student's Average
Arithmetic operators can calculate a student's total marks and average across multiple subjects.
math_marks = 85
science_marks = 90
english_marks = 80
total_marks = math_marks + science_marks + english_marks
average_marks = total_marks / 3
print("Total marks:", total_marks)
print("Average marks:", average_marks)
Output:
Total marks: 255
Average marks: 85.0
This example uses addition to calculate the total and division to calculate the average. If the number of subjects changes, update the divisor or calculate the count programmatically.
20. Practical Example: Calculating a Rectangle's Area and Perimeter
Geometry calculations are another common application of arithmetic operators.
length = float(input("Enter length: "))
width = float(input("Enter width: "))
area = length * width
perimeter = 2 * (length + width)
print("Area:", area)
print("Perimeter:", perimeter)
Sample Input:
Enter length: 10
Enter width: 4
Output:
Area: 40.0
Perimeter: 28.0
The area is calculated by multiplying the length by the width. The perimeter is calculated by adding the length and width and multiplying the result by two.
21. Practical Example: Converting Seconds into Hours, Minutes, and Seconds
Floor division and modulus are especially useful for breaking a total quantity into units.
total_seconds = 7384
hours = total_seconds // 3600
remaining_seconds = total_seconds % 3600
minutes = remaining_seconds // 60
seconds = remaining_seconds % 60
print("Hours:", hours)
print("Minutes:", minutes)
print("Seconds:", seconds)
Output:
Hours: 2
Minutes: 3
Seconds: 4
This technique can be adapted to durations, time tracking, and similar calculations that involve fixed unit sizes.
22. Common Errors and Troubleshooting
| Error or issue |
Cause |
Solution |
ZeroDivisionError |
The divisor is zero. |
Check that the divisor is not zero before division, floor division, or modulus. |
TypeError when adding a string and number |
Incompatible operand types. |
Convert the input to a number or convert the number to a string, depending on the goal. |
ValueError during conversion |
Input such as "abc" cannot be converted to a float or integer. |
Validate input or handle the exception with try/except. |
| Unexpected floor division result |
Floor division rounds down, including for negative results. |
Check the signs of both operands and remember that rounding is toward negative infinity. |
| Unexpected result from a mixed expression |
Operator precedence changes the order of operations. |
Use parentheses to make the intended calculation clear. |
| Small differences in decimal calculations |
Binary floating-point cannot represent every decimal fraction exactly. |
Use approximate comparisons or Decimal where appropriate. |
| Unexpected negative exponent result |
A negative exponent represents a reciprocal for a nonzero base. |
Review exponent rules; for example, 2 ** -2 equals 0.25. |
Handling Invalid Numeric Input
try:
number = float(input("Enter a number: "))
divisor = float(input("Enter a divisor: "))
if divisor == 0:
print("Error: divisor cannot be zero")
else:
print("Result:", number / divisor)
except ValueError:
print("Error: enter valid numeric values")
This example catches invalid numeric input and prevents division by zero. Exception handling makes interactive programs more reliable.
23. Best Practices for Using Arithmetic Operators
- Choose variable names that describe the values being calculated, such as
total_price or average_marks.
- Use parentheses when an expression contains multiple operations and the intended order might be unclear.
- Validate divisors before using
/, //, or %.
- Convert user input to an appropriate numeric type before performing calculations.
- Use
int for whole-number calculations and float for approximate decimal calculations when suitable.
- Use
Decimal for financial calculations when decimal arithmetic and controlled rounding are required.
- Test calculations with positive values, negative values, zero, and decimal values.
- Be aware that floating-point calculations can introduce small precision differences.
- Use augmented assignment operators when they make updates clearer.
- Keep calculations readable instead of placing too many operations in one complicated expression.
24. Practice Exercises
Beginner-Level Exercises
- Write a program that adds two numbers entered by the user.
- Write a program to subtract one number from another.
- Calculate the product of three integers.
- Divide a total bill equally among a specified number of people.
- Calculate the square and cube of a number using
**.
Intermediate-Level Exercises
- Ask the user for an integer and determine whether it is even or odd using
%.
- Convert a total number of minutes into hours and remaining minutes using
// and %.
- Calculate the total price of several items after subtracting a discount.
- Evaluate an expression with multiple arithmetic operators and explain the order of operations.
- Create a calculator that supports addition, subtraction, multiplication, division, floor division, modulus, and exponentiation.
Advanced-Level Exercises
- Write a program that converts a total number of seconds into hours, minutes, and seconds.
- Calculate the compound amount for a specified principal, annual interest rate, and number of compounding periods using exponentiation.
- Build a shopping bill calculator that accepts multiple item prices and quantities and displays the subtotal, discount, tax, and final total.
- Compare floating-point results using
math.isclose() and explain why direct equality comparisons can sometimes be unreliable.
- Use
Decimal to calculate a monetary total and apply a suitable rounding rule.
25. Mini Project: Student Marks Calculator
Project Objective: Build a small program that accepts marks for three subjects and calculates total marks, average marks, and the marks remaining to reach a target total.
Project Code
try:
subject1 = float(input("Enter marks for Subject 1: "))
subject2 = float(input("Enter marks for Subject 2: "))
subject3 = float(input("Enter marks for Subject 3: "))
marks = [subject1, subject2, subject3]
if any(mark < 0 or mark > 100 for mark in marks):
print("Marks must be between 0 and 100.")
else:
total = subject1 + subject2 + subject3
average = total / len(marks)
target_total = 240
remaining = max(0, target_total - total)
print("Total marks:", total)
print("Average marks:", average)
print("Marks needed to reach target:", remaining)
except ValueError:
print("Please enter valid numeric marks.")
Sample Output
Enter marks for Subject 1: 80
Enter marks for Subject 2: 75
Enter marks for Subject 3: 90
Total marks: 245.0
Average marks: 81.66666666666667
Marks needed to reach target: 0
Project Concepts Used
- Addition for calculating total marks.
- Division for calculating the average.
- Subtraction for calculating the marks needed to reach a target.
max() to prevent the remaining marks from becoming negative.
- Input conversion and exception handling for more reliable execution.
26. Interview Questions and Answers
Q1. What are arithmetic operators in Python?
Answer: Arithmetic operators perform mathematical operations on values or variables. Examples include addition (+), subtraction (-), multiplication (*), division (/), floor division (//), modulus (%), and exponentiation (**).
Q2. What is the difference between / and //?
Answer: The / operator performs true division, while // performs floor division. For example, 17 / 5 returns 3.4, whereas 17 // 5 returns 3.
Q3. What does the modulus operator do?
Answer: The modulus operator (%) returns the remainder from division. It is commonly used to check whether a number is even or odd.
Q4. What is the result of 2 ** 3?
Answer: The result is 8, because 2 is raised to the power of 3.
Q5. What happens when a number is divided by zero?
Answer: Ordinary numeric division, floor division, and modulus with a zero divisor raise a ZeroDivisionError. Programs should check the divisor or handle the exception.
Q6. Why does 10 / 2 return 5.0 instead of 5?
Answer: The / operator performs true division and returns a floating-point result for ordinary integer operands.
Q7. What is operator precedence?
Answer: Operator precedence determines which operations are evaluated first in an expression. Multiplication, division, floor division, and modulus generally take precedence over addition and subtraction.
Q8. How can parentheses change an arithmetic expression?
Answer: Parentheses specify which expression should be evaluated first. For example, 10 + 5 * 2 returns 20, while (10 + 5) * 2 returns 30.
Q9. What is the difference between int and float results?
Answer: An integer represents a whole number, while a float represents a floating-point number. The result type depends on the operation and operand types. For example, 5 + 2 returns an integer, whereas 5 / 2 returns a float.
Q10. Why can 0.1 + 0.2 produce an unexpected decimal result?
Answer: Many decimal fractions cannot be represented exactly using binary floating-point. Small precision differences can occur. Use math.isclose() for approximate comparisons or Decimal for appropriate decimal calculations.
Q11. What does the expression -3 ** 2 return?
Answer: It returns -9, because exponentiation is evaluated before unary minus. The expression (-3) ** 2 returns 9.
Q12. What are augmented arithmetic assignment operators?
Answer: They combine an arithmetic operation with assignment. Examples include +=, -=, *=, /=, //=, %=, and **=.
27. Quick Revision Checklist
- Addition:
+ adds values.
- Subtraction:
- calculates a difference.
- Multiplication:
* multiplies values.
- Division:
/ performs true division.
- Floor division:
// rounds the quotient down toward negative infinity.
- Modulus:
% returns the remainder.
- Exponentiation:
** raises a value to a power.
- Unary operators:
+x and -x indicate or reverse a numeric sign.
- Precedence: Use parentheses to make the order of calculations clear.
- Input: Convert values returned by
input() before numeric calculations.
- Error handling: Check for zero divisors and invalid input.
- Precision: Understand floating-point limitations and choose suitable numeric types.
28. Conclusion
Arithmetic operators are essential building blocks of Python programming. They allow developers to perform calculations, process user input, update values, and solve practical problems. Understanding the difference between true division, floor division, modulus, and exponentiation helps learners write accurate and predictable programs.
Practice these operators with variables, numeric data types, conditional statements, and user input. Then apply them in small projects such as calculators, bill generators, student mark calculators, and time converters to strengthen your programming skills.
To continue learning Python, explore the Python Training Course at JustAcademy, register for a course demo, or visit the JustAcademy website.